package cn.zyq.ykb.beans.product;

import cn.zyq.ykb.beans.user.User;
import cn.zyq.ykb.system.common.BaseBean;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商品订单对象 productOrder
 *
 * @author SystemAuth
 * @date 2023-11-02
 */
@Data
@Entity
@Table(name = "`productOrder`")
public class ProductOrder  extends BaseBean implements Serializable {
    /**
     * 主键id，用于关联
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "JDBC")
    @Column(name = "`productOrderID`")
    @ApiModelProperty("主键id，用于关联")
    private Integer productOrderID;
    /**
     * 用户ID
     */
    @Column(name = "`userID`")
    @ApiModelProperty("用户ID")
    private Integer userID;
    /**
     * 商品数量
     */
    @Column(name = "`productNum`")
    @ApiModelProperty("商品数量")
    private Integer productNum;
    /**
     * 商品单价
     */
    @Column(name = "`productPrice`")
    @ApiModelProperty("商品单价")
    private BigDecimal productPrice;
    /**
     * 实付总金额
     */
    @Column(name = "`totalPrice`")
    @ApiModelProperty("实付总金额")
    private BigDecimal totalPrice;
    /**
     * 订单状态（1.待支付，2支付成功，3.支付失败，4.订单超时）
     */
    @Column(name = "`orderState`")
    @ApiModelProperty("订单状态（1.待支付，2支付成功，3.支付失败，4.订单超时）")
    private Integer orderState;
    /**
     * 支付渠道（1.支付宝）
     */
    @Column(name = "`payType`")
    @ApiModelProperty("支付渠道（1.支付宝）")
    private Integer payType;
    /**
     * 支付时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "`payTime`")
    @ApiModelProperty("支付时间")
    private LocalDateTime payTime;
    /**
     * 完成时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "`finishTime`")
    @ApiModelProperty("完成时间")
    private LocalDateTime finishTime;
    /**
     * 支付过期时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "`payExpireTime`")
    @ApiModelProperty("支付过期时间")
    private LocalDateTime payExpireTime;
    /**
     * 商品ID
     */
    @Column(name = "`productID`")
    @ApiModelProperty("商品ID")
    private Integer productID;
    /**
     * 订单号
     */
    @Column(name = "`orderCode`")
    @ApiModelProperty("订单号")
    private String orderCode;
    /**
     * 订单金额
     */
    @Column(name = "`price`")
    @ApiModelProperty("订单金额")
    private BigDecimal price;
    /**
     * 第三方支付请求响应信息
     */
    @Column(name = "`payReqRespInfo`")
    @ApiModelProperty("第三方支付请求响应信息")
    private String payReqRespInfo;
    /**
     * 订单类型（1购买课程）
     */
    @Column(name = "`orderType`")
    @ApiModelProperty("订单类型（1购买课程）")
    private Integer orderType;

    @Transient
    private Product product;

    @Transient
    private ProductLink productLink;

    @Transient
    private User user;
}
